package org.xenon.vote.service;

import org.springframework.stereotype.Service;
import org.xenon.vote.dao.imp.TurnDao;
import org.xenon.vote.model.pojo.po.Turn;

import java.util.List;

@Service
public class TurnService {
    private final TurnDao turnDao;

    public TurnService(TurnDao turnDao) {
        this.turnDao = turnDao;
    }


    public void update(Turn turn) {
        turnDao.edit(turn);
    }

    /**
     * 注册一个轮次
     * @param ballot 所属的投票
     * @param limit 选出的选项数
     * @param option 每个裁判能选的选项
     */
    public Turn add(int ballot, int limit, int option){
        turnDao.add(new Turn(-1, getLatestOrder(ballot) + 1, ballot, limit, option));
        return turnDao.getAll(ballot).get(0);
    }

    /**
     * 获取投票最新的轮次号
     * @param ballot 目标投票
     */
    public int getLatestOrder(int ballot){
        List<Turn> list = turnDao.getAll(ballot);
        if (list.size() == 0) return -1;
        Turn latest = turnDao.getAll(ballot).get(0);
        return latest.getOrder();
    }

    public Turn getLast(int ballot) {
        List<Turn> list = turnDao.getAll(ballot);
        if (list.size() == 0) return null;
        return turnDao.getAll(ballot).get(0);
    }

    /**
     * 按时间排序选出投票的所有轮次
     * @param ballot 投票编号
     * @return 时间排序选出的投票所有轮次
     */
    public List<Turn> getAll(int ballot){
        return turnDao.getAll(ballot);
    }

}
